package com.alks.function.service;

import com.alks.entity.data.entity.PcMtlHueDesignRep;
import com.alks.entity.data.entity.SdMtlNew;
import com.alks.entity.data.entity.SdMtlTypeDetail;
import com.alks.entity.data.response.ResponseInfo;
import com.alks.function.data.dto.chengKong.assort.SdCustTypeDto;
import com.alks.function.data.dto.chengKong.assort.SdMtlTypeNewDto;
import com.alks.function.data.request.MaterialLotRequest;
import com.alks.function.data.request.MaterialOutRequest;
import com.alks.function.data.request.MaterialRequest;
import com.alks.function.data.request.last.OutsoleOrderDetailReq;
import com.alks.function.data.request.operate.material.GeneralMaterialRequest;
import com.alks.function.data.request.operate.material.MaterialDetail1Request;
import com.alks.function.data.request.order.PcOrderMtlRegularSingleRequest;
import com.alks.function.data.request.stock.*;
import com.google.zxing.WriterException;

import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

public interface MaterialService {

    ResponseInfo getInventoryDetail(MaterialRequest request);

    ResponseInfo getLotDetailInfo(MaterialLotRequest request);

    ResponseInfo getMaterialDetailOut(MaterialOutRequest request);

    ResponseInfo getSendOutList(MaterialLotRequest request);

    ResponseInfo pcOrderMtlRS(PcOrderMtlRegularSingleRequest request);

    ResponseInfo pcOrderMtlSo(PcOrderMtlRegularSingleRequest request);

    ResponseInfo pcOrderMtlMakeOrder(PcOrderMtlRegularSingleOutRequest request);

    ResponseInfo pcOrderMtlMakeOrderDetail(PcOrderMaterialOrderDetailRequest request);

    ResponseInfo createPcOrderMtlOrder(PcOrderMtlOrderCreateRequest request);

    ResponseInfo getMaterialADetail1(MaterialDetail1Request request);

    ResponseInfo updateMaterialADetail1(GeneralMaterialRequest request);

    ResponseInfo getPcMtlMoldLot(PcMtlMoldLotRequest request);

    ResponseInfo createPcMtlMoldLot(CreateMtlMoldRequest request);

    ResponseInfo getOutsoleOrderDetail(OutsoleOrderDetailReq request);

    ResponseInfo insertIntoOther(IMaterialIMReq request);

    ResponseInfo operateSole(PcSoleOperateReq request);

    ResponseInfo mtlHueDesign(String choose,String colorName,Integer pageNum,Integer pageSize);

    ResponseInfo updateHueDesign(PcMtlHueDesignRep rep, String choose,String colorName);

    ResponseInfo mtlPropertyListTree();

    ResponseInfo insertSdMtlTypeNew(SdMtlTypeNewDto req, String typeNo, String typeName);

    ResponseInfo deleteSdMtlTypeNew(SdMtlTypeNewDto req);

    ResponseInfo updateSdMtlTypeNew(SdMtlTypeNewDto req);

    ResponseInfo sdMtlTypeDetailList(SdMtlTypeDetail req);

    ResponseInfo insertSdMtlTypeDetail(SdMtlTypeDetail req);

    ResponseInfo mtlPropertyList();

    ResponseInfo mtlPropertyRD(String typeName);

    ResponseInfo insertProperty(String code, String name, String seqNo, String choose);

    ResponseInfo insertPropertyDetail(String mtlName, String seqNo, String spec);

    ResponseInfo sdCustTypeAVen(String choose);

    ResponseInfo insertSdCustType(SdCustTypeDto req, String parentLevel, String choose);

    ResponseInfo deleteSdCustOrVen(SdCustTypeDto req, String choose);

    ResponseInfo sdMtlNewList(SdMtlNewReq req);

    ResponseInfo createSdMtlNew(SdMtlNew req, String choose);

    void downMtlPurSlipExcel(String slipNo,HttpServletResponse response) throws IOException, WriterException;

    void downUniversalExcel(String slipNo, HttpServletResponse response) throws IOException, WriterException;

    void downloadSoleOrder(HttpServletResponse response,String slipNo) throws IOException, WriterException;

    void downloadSdMtlNew(HttpServletResponse response, SdMtlNewReq req) throws IOException;

    void exportMaterial(MaterialRequest request, HttpServletResponse response);

    void exportMaterialDetailOut(MaterialOutRequest request, HttpServletResponse response);
}
